using System;
using System.Collections.Generic;
using System.Text;

namespace Oops.Xna.Framework.Physics
{
	/// <summary>
	/// Defines the contract for a physics service.
	/// </summary>
	public interface IPhysicsService
	{
		/// <summary>
		/// Gets the physics service's associated <see cref="CollisionSystem"/>.
		/// </summary>
		CollisionSystem CollisionSystem { get; }

		/// <summary>
		/// Gets the physics service's associated <see cref="RigidBody"/> collection.
		/// </summary>
		IList<RigidBody> RigidBodies { get; }

		/// <summary>
		/// Gets the physics service's associated <see cref="Constaint"/> collection.
		/// </summary>
		IList<Constraint> Constaints { get; }

		/// <summary>
		/// Gets the physics service's associated <see cref="IPhysicsListener"/> collection.
		/// </summary>
		IList<IPhysicsListener> Listeners { get; }

		/// <summary>
		/// Gets the physics service's associated <see cref="IAsyncUpdateCallback"/> collection.
		/// </summary>
		IList<IAsyncUpdateCallback> Callbacks { get; }
	}
}
